#ifndef _IUIWINDOW_H_
#define _IUIWINDOW_H_

#include <crt_util.h>
#include <ui/iuibase.h>
#include <ui/iuicontrol.h>

interface IUIEvent : public IBase
{
    std_method(OnUiEvent)(const NotifyEvent* event) PURE;
};

// {1CFC9C5C-3C7B-4CE1-9F52-034932B43AFA}
_DEF_IID(IID_IUIEvent, 0x1cfc9c5c, 0x3c7b, 0x4ce1, 0x9f, 0x52, 0x3, 0x49, 0x32, 0xb4, 0x3a, 0xfa);

interface IUIWindow : public IBase
{
    std_method_(void*, CreateUiWindow)(void* hWnd) PURE;
    std_method_(int, DestroyUiWindow)() PURE;
    std_method_(int, AddUiWindow)(void* hWnd) PURE;
    std_method_(int, ShowUiWindow)(int nCmdShow) PURE;
    std_method_(int, SetResourceFile)(LPSTRING file) PURE;
    std_method_(int, SetResource)(_pid_instance inst, LPSTRING path) PURE;
    std_method_(int, SendMessage)(const NotifyEvent* event) PURE;
    std_method_(int, PostMessage)(const NotifyEvent* event) PURE;
    std_method_(int, TranslateMessage)(const NotifyEvent* event) PURE;
    std_method(BindEvent)(IBase* pEvents) PURE;
    std_method(UnBindEvent)() PURE;
};

// {F100C7D9-62C4-46E2-AF75-24ABE7EAD0B6}
_DEF_IID(IID_IUIWindow, 0xf100c7d9, 0x62c4, 0x46e2, 0xaf, 0x75, 0x24, 0xab, 0xe7, 0xea, 0xd0, 0xb6);

#endif // !_IUIBASE_H_
